/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import basicas.organizacionais.Funcionario;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import negocio.Fachada;

/**
 *
 * @author Jefferson
 */
@ManagedBean
public class FuncionarioBean {

    private Funcionario funcionario;
    private List<Funcionario> listFuncionario;
    private int codigoBusca;
    private List<Funcionario> filteredFun;
    
    public FuncionarioBean(){        
            funcionario = new Funcionario();
    }

     public void inserir(){                        
        try {     
                
                if(validarForm(funcionario)){
                    Fachada.getInstancia().inserirFuncionario(funcionario);                    
                    funcionario = new Funcionario();                    
                }
        } catch (Exception e) {
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }
     
    public void alterar(){
        try {   
                if(validarForm(funcionario)){
                    Fachada.getInstancia().alterarFuncionario(funcionario);
                }
        } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }
    }
    
    public void removerFuncionario(Funcionario funcionario){	        
        try {            
            Fachada.getInstancia().removerFuncionario(funcionario);
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,"Romovido com Sucesso", "");
            FacesContext.getCurrentInstance().addMessage(null, msg);    
        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erro", "Erro na operação"));
        }                		
    }

    public void buscar(){        
        funcionario = Fachada.getInstancia().getFuncionarioByCodigo(codigoBusca);
        if(funcionario == null){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Funcionario não encontrado!", ""));
        }
    }
    
    private boolean validarForm(Funcionario funcionario){
        boolean critica = false;
        
        if(funcionario.getNome().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha o nome!", ""));
            critica = true;
        }
        if(funcionario.getFone().equals("")){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Preencha o telefone!", ""));
            critica = true;
        }         
        
        return critica ? false : true;
    }
    
    public void limpar(){
        funcionario = new Funcionario();
    }
    
    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public List<Funcionario> getListFuncionario() {
        listFuncionario = Fachada.getInstancia().listarFuncionarios();
        return listFuncionario;
    }

    public String alterarFuncionario(Funcionario pfuncionario){	
        this.funcionario = pfuncionario;
        return "alterarfuncionario.xhtml";
    }   
    
    public void setListFuncionario(List<Funcionario> listFuncionario) {
        this.listFuncionario = listFuncionario;
    }

    public int getCodigoBusca() {
        return codigoBusca;
    }

    public void setCodigoBusca(int codigoBusca) {
        this.codigoBusca = codigoBusca;
    }

    public List<Funcionario> getFilteredFun() {
        return filteredFun;
    }

    public void setFilteredFun(List<Funcionario> filteredFun) {
        this.filteredFun = filteredFun;
    }
    
}
